import type { 不可能, 是, 否 } from '../utils'
import type { 红色, 黑色 } from '../color'
import type { 零, 一, 二, 三, 四, 五, 七, 八, 九 } from '../integer'
import type { 构造棋子坐标 } from '../position'

type 黑士的可能位置 =
  | 构造棋子坐标<三, 零>
  | 构造棋子坐标<三, 二>
  | 构造棋子坐标<四, 一>
  | 构造棋子坐标<五, 零>
  | 构造棋子坐标<五, 二>

type 红士的可能位置 =
  | 构造棋子坐标<三, 七>
  | 构造棋子坐标<三, 九>
  | 构造棋子坐标<四, 八>
  | 构造棋子坐标<五, 七>
  | 构造棋子坐标<五, 九>

type 黑士可以放在这里吗<位置> = 位置 extends 黑士的可能位置 ? 是 : 否
type 红士可以放在这里吗<位置> = 位置 extends 红士的可能位置 ? 是 : 否

export type 士可以放在这里吗<颜色, 位置> = 颜色 extends 红色
  ? 红士可以放在这里吗<位置>
  : 颜色 extends 黑色
  ? 黑士可以放在这里吗<位置>
  : 不可能

/**
 * 测试代码
 */
type 黑士00 = 士可以放在这里吗<黑色, 构造棋子坐标<零, 零>>
type 红士00 = 士可以放在这里吗<红色, 构造棋子坐标<零, 零>>
type 黑士30 = 士可以放在这里吗<黑色, 构造棋子坐标<三, 零>>
type 红士30 = 士可以放在这里吗<红色, 构造棋子坐标<三, 零>>
type 黑士48 = 士可以放在这里吗<黑色, 构造棋子坐标<四, 八>>
type 红士48 = 士可以放在这里吗<红色, 构造棋子坐标<四, 八>>
